OPT	LINK='Amiga.lib'

MODULE	'devices/timer',
			'devices/keymap',
			'libraries/commodities',
			'utility/hooks',
			'intuition/classes',
			'intuition/classusr',
			'graphics/graphint'

/*  Exec support functions */
/*
void BeginIO( struct IORequest *ioReq );
struct IORequest *CreateExtIO( struct MsgPort *port, long ioSize );
struct MsgPort *CreatePort( STRPTR name, long pri );
struct IOStdReq *CreateStdIO( struct MsgPort *port );
struct Task *CreateTask( STRPTR name, long pri, APTR initPC,
	unsigned long stackSize );
void DeleteExtIO( struct IORequest *ioReq );
void DeletePort( struct MsgPort *ioReq );
void DeleteStdIO( struct IOStdReq *ioReq );
void DeleteTask( struct Task *task );
void NewList( struct List *list );
APTR LibAllocPooled( APTR poolHeader, unsigned long memSize );
APTR LibCreatePool( unsigned long memFlags, unsigned long puddleSize,
	unsigned long threshSize );
void LibDeletePool( APTR poolHeader );
void LibFreePooled( APTR poolHeader, APTR memory, unsigned long memSize );

/* Assorted functions in amiga.lib */

ULONG FastRand( unsigned long seed );
UWORD RangeRand( unsigned long maxValue );

/* Graphics support functions in amiga.lib */

void AddTOF( struct Isrvstr *i, long (*p)(), long a );
void RemTOF( struct Isrvstr *i );
void waitbeam( long b );

/* math support functions in amiga.lib */

FLOAT afp( BYTE *string );
void arnd( long place, long exp, BYTE *string );
FLOAT dbf( unsigned long exp, unsigned long mant );
LONG fpa( FLOAT fnum, BYTE *string );
void fpbcd( FLOAT fnum, BYTE *string );

/* Timer support functions in amiga.lib (V36 and higher only) */

LONG TimeDelay( long unit, unsigned long secs, unsigned long microsecs );
LONG DoTimer( struct timeval *, long unit, long command );

/*  Commodities functions in amiga.lib (V36 and higher only) */

void ArgArrayDone( void );
UBYTE **ArgArrayInit( long argc, UBYTE **argv );
LONG ArgInt( UBYTE **tt, STRPTR entry, long defaultval );
STRPTR ArgString( UBYTE **tt, STRPTR entry, STRPTR defaulstring );
CxObj *HotKey( STRPTR description, struct MsgPort *port, long id );
struct InputEvent *InvertString( STRPTR str, struct KeyMap *km );
void FreeIEvents( struct InputEvent *events );

/* Commodities Macros */

/* CxObj *CxCustom(LONG(*)(),LONG id)(A0,D0) */
/* CxObj *CxDebug(LONG id)(D0) */
/* CxObj *CxFilter(STRPTR description)(A0) */
/* CxObj *CxSender(struct MsgPort *port,LONG id)(A0,D0) */
/* CxObj *CxSignal(struct Task *task,LONG signal)(A0,D0) */
/* CxObj *CxTranslate(struct InputEvent *ie)(A0) */

/*  ARexx support functions in amiga.lib */

BOOL CheckRexxMsg( struct Message *rexxmsg );
LONG GetRexxVar( struct Message *rexxmsg, UBYTE *name, UBYTE **result );
LONG SetRexxVar( struct Message *rexxmsg, UBYTE *name, UBYTE *value,
	long length );
*/
/*  Intuition hook and boopsi support functions in amiga.lib. */
/*  These functions do not require any particular ROM revision */
/*  to operate correctly, though they deal with concepts first introduced */
/*  in V36.  These functions would work with compatibly-implemented */
/*  hooks or objects under V34. */

LPROC CallHookA(hookPtr:PTR TO Hook,obj:PTR TO _Object,message:PTR TO LONG)(ULONG)
LPROC CallHook(hookPtr:PTR TO Hook,obj:PTR TO _Object,message:LIST OF LONG)(ULONG)
LPROC DoMethodA(obj:PTR TO _Object,message=NIL:PTR TO Msg)(ULONG)
LPROC DoMethod(obj:PTR TO _Object,MethodID:ULONG,message=NIL:LIST OF LONG)(ULONG)
LPROC DoSuperMethodA(cl:PTR TO IClass,obj:PTR TO _Object,message:PTR TO Msg)(ULONG)
LPROC DoSuperMethod(cl:PTR TO IClass,obj:PTR TO _Object,MethodID:ULONG,list:LIST OF LONG)(ULONG)
LPROC CoerceMethodA(cl:PTR TO IClass,obj:PTR TO _Object,message:PTR TO Msg)(ULONG)
LPROC CoerceMethod(cl:PTR TO IClass,obj:PTR TO _Object,MethodID:ULONG,list:LIST OF LONG)(ULONG)
LPROC SetSuperAttrs(cl:PTR TO IClass,obj:PTR TO _Object,Tag1:LIST OF TagItem)(ULONG)

LPROC ACrypt(buffer:PTR TO CHAR,password:PTR TO CHAR,username:PTR TO CHAR)(PTR TO CHAR)
